package com.tedu.food.sys.dao;

import com.tedu.food.common.vo.GoodsVo;
import com.tedu.food.sys.entity.Category;
import com.tedu.food.sys.entity.Goods;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * GoodsDao类用于描述商品信息
 * 
 * @author 作者:tiankun
 * @createdTime 创建时间 :2019年11月22日 上午10:52:05
 *
 */

@Mapper
public interface GoodsDao {
	/***
	 * 根据商品名(goodsName)进行模糊查询
	 * 
	 * @param goodsName 用户传入的名称
	 * @return 返回查询到的数据行数
	 * @author 周
	 * @version 创建时间：2019年11月22日 下午16:00:01
	 * 
	 */
	int getRowCount(@Param("goodsName") String goodsName, @Param("categoryId") Integer categoryId);

	/***
	 * 根据用户传入商品名进行模糊以及按分页查询goodsName信息
	 * 
	 * @param goodsName  商品名称
	 * @param startIndex 开始页码
	 * @param pageSize   页面大小
	 * @return 返回商品信息列表
	 * @author 周
	 * @version 创建时间：2019年11月22日 下午16:44:57
	 */
	List<GoodsVo> findGoodsObject(@Param("goodsName") String goodsName, @Param("startIndex") Integer startIndex,
								  @Param("pageSize") Integer pageSize, @Param("categoryId") Integer categoryId);

	/***
	 * 添加商品数据
	 * 
	 * @author 周
	 * @version 创建时间：2019年11月22日 下午16:04:59
	 * @param Goods
	 * @return 返回影响行数
	 */
	int insertGoodsObject(Goods goods);

	/***
	 * 根据传入ids删除商品数据
	 * 
	 * @author 周
	 * @version 创建时间：2019年11月22日 下午16:04:59
	 * @param ids
	 * @return 返回影响行数
	 */
	int deleteGoodsObjectById(@Param("ids") Integer... ids);

	/***
	 * 修改商品信息
	 * 
	 * @author 周
	 * @version 创建时间：2019年11月22日 下午16:04:59
	 * @param Goods
	 * @return 返回影响行数
	 */
	int updateGoodsObject(Goods goods);

	/***
	 * 查询商品分类信息
	 * 
	 * @author 周
	 * @version 创建时间：2019年11月22日 下午16:04:59
	 * @param Goods
	 * @return 返回影响行数
	 */
	List<Category> findAllCategory();

	/***
	 * 商品上架下架操作
	 * 
	 * @author 周
	 * @version 创建时间：2019年11月22日 下午16:04:59
	 * @param Goods
	 * @return 返回影响行数
	 */
	int validById(@Param("id") Integer id, @Param("goodsStatus") Integer goodsStatus);

	/**
	 * 
	 */

	int findCategoryIdByCategoryName(@Param("categoryName") String categoryName);

    Goods findGoodsById(Integer id);
}
